package com.lashou.labeutil.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;





/**
 * 各种时间操作方法 定义各种时间格式化输入，输出
 * @author fengbo
 * @version1.0
 * 
 */
public class TimeUtil {

	/**
	 * @author fengbo
	 * 
	 * @return 将当前时间格式化为yyyy-MM-dd HH:mm:ss
	 */
	public static String getStandardTime(){
	
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dt = new Date();
		
		String date = format.format(dt);
		return date;
	}

	/**
	 * @author fengbo
	 * 
	 * @return 将当前时间格式化为yyyy-MM-dd
	 */
	public static String getYMDTime(){
	
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
		Date dt = new Date();
		
		String date = format.format(dt);
		return date;
	}
	/**
	 * @author fengbo
	 * 
	 * @return 将当前字符串yyyy-MM-dd HH:mm:ss:转化为日期格式
	 */
	public static Date getyMdHms(String time) {
		 Date date = null;
		try {
			 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		
			date = df.parse(time);
			
		} catch (ParseException e) {
			return date;
		}
		return date;
	}
	/**
	 * 根据指定字符串的指定格式 将字符串转化为日期
	 * @param time
	 * @param patten
	 * @return
	 */
	public static Date getDateByPatten(String time,String patten){
		 Date date = null;
			try {
				 DateFormat df = new SimpleDateFormat(patten); 
			
				date = df.parse(time);
				
			} catch (ParseException e) {
				return date;
			}
			return date;
	}
	/**
	 * @author fengbo
	 * 
	 * @return 将当前字符串yyyy-MM-dd转化为日期格式
	 */
	public static Date getDate(String time) {
		if(null==time||"".equals(time)||"null".equals(time)){
			return null;
		}
		 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
		 Date date = null;
		try {
			date = df.parse(time);
			
		} catch (Exception e) {
			return null;
		}
		return date;
	}
	/**
	 * @author fengbo
	 * 
	 * @return 将日期转化为yyyy-MM-dd类型的字符串
	 */
	public static String getYMDTime(Date date){
		if(null==date){
			return "";
		}
		try{
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
		return format.format(date);
		}catch(Exception e){
			return "";
		}
	}
	/**
	 * @author fengbo
	 * 
	 * @return 将日期转化为yyyy-MM-dd HH:mm:ss类型的字符串
	 */
	public static String getYMDHMSTime(Date date){
		if(null==date){
			return null;
		}
		try{
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(date);
		}catch(Exception e){
			return null;
		}
	}
	
	/**
	 * @author fengbo
	 * j将时间"2008-09-04 00:00:00:0" 转换为 "2008-09-04"
	 * @param strDate
	 * @return
	 */
	public static String getYMDByStrTime(String strDate){
		
		return getYMDTime(getDate(strDate));
	}
	/**
	 * @author fengbo
	 * j将时间"2008-09-04 00:00:00:0" 转换为 "2008-09-04 00:00:00"
	 * @param strDate
	 * @return
	 */
	public static String getYMDHMSByTime(String strDate){
		if(null==strDate||"".equals(strDate)){
			return strDate;
		}
		try{
			strDate = strDate.substring(0,19);
		}catch(Exception e){
			return strDate;
		}
		return strDate;
	}
	
	/**
	 * @author fengbo
	 * 
	 * @return 将日期转化为yyyy年MM月dd日类型的字符串
	 */
	public static String getChYMDTime(Date date){
		try{
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy年MM月dd日");
		return format.format(date);
		}catch(Exception e){
			return "";
		}
	}

	/**
	 * @author fengbo
	 * j将时间"2008-09-04 00:00:00:0" 转换为 "2008年09月04日"
	 * @param strDate
	 * @return
	 */
    public static String getChYMDByStrTime(String strDate){
		
		return getChYMDTime(getDate(strDate));
	}
    
    /**
	 * @author fengbo
	 * 
	 * @return 将当前时间格式化为yyyy年MM月dd日
	 */
    public static String getChYMDTime(){
    	
		java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy年MM月dd日");
		Date dt = new Date();
		
		String date = format.format(dt);
		return date;
	}
    /**
     * 将时间类型转换为yyyy-MM-dd HH:mm
     * @param date
     * @return
     */
    public static Date getyMdHm(Date date){
    	if(date==null){
    		return date;
    	}
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
        Date result = null;
        try {
        	result = df.parse(df.format(date));
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return result;
	}
    /**
     * 截取字符串 获得时间格式 yyyy-MM-dd
     * @param str
     * @return
     */
   public static String getSandardTime(String str){
	   if(null==str||"".equals(str)){
		   return "";
	   }
	   try{
		   str = str.substring(0,10);
	   }catch(Exception e){
		   return "";
	   }
	   
	   return str;
   }
   /**
    * 获得sql中的Timestamp 
    * @param date
    * @return
    */
   public static java.sql.Time getTimeByDate(java.util.Date date){
	   if(null==date){return null;}
	   try{
		   return (java.sql.Time)date;
	   }catch(Exception e){
		   return null;
	   }
   }
   /**
    * 获得东八区时间
    * @return
    */
   public static Date getGMT8Time(){
		//获得东八区时间
		TimeZone.setDefault(TimeZone.getTimeZone("GMT+08:00"));
		Calendar c = new GregorianCalendar();
			System.out.println(c.getTime());
		return c.getTime();
   }
   
   /**
    * 得到制定格式的date类返回的时间串
    * @param date
    * @param formatPattern
    * @return
    */
   public static String getDateByForamt( Date date ,String formatPattern ){
	   String resDate = null;
	   SimpleDateFormat sdf = new SimpleDateFormat(formatPattern);
	   resDate = sdf.format(date);
	   return resDate;
   }
   /**
    * 获得当前时间第二天的零点
    * @param date
    * @return
    */
   public static Date getNextDayTime(Date date){
		 GregorianCalendar cu = new GregorianCalendar();
		 cu.roll(Calendar.DAY_OF_MONTH, 1);
		 return TimeUtil.getyMdHms(TimeUtil.getDateByForamt(cu.getTime(), "yyyy-MM-dd 00:00:00"));
	    
   }
  
 
   
   public static void main(String [] args){
	   //每天运行一次 每次检查当天是否为周一 如果为周一则计算上周的数据
	   
	/*	 Calendar start = new GregorianCalendar();
		 start.set(Calendar.YEAR, 2011);
		 start.set(Calendar.MONTH, 1);
		 start.set(Calendar.DAY_OF_MONTH, 21);
		
		 System.out.println(start.get(Calendar.DAY_OF_WEEK));
		 java.util.Date dt = start.getTime();
		 java.util.Date startdate =  new java.util.Date(dt.getTime());
		 
		 
		 System.out.println(TimeUtil.getYMDHMSTime(startdate));*/
	   		char x = 'a', y = 'b';
			x = (char) (x ^ y);
			y = (char) (x ^ y);
			x = (char) (x ^ y);
		
		System.out.println(x +"   "+y);

	   
   }
   public static Date getDateByLong(long time)
   {
	   try{
		   return new Date(time);
	   }catch(Exception e)
	   {
		   return null;
	   }
   }
}
